#include <stdio.h> 
#include <stdlib.h>
#include <sys/types.h> 
#include <sys/wait.h> 
#include <sys/stat.h>
#include <string.h>
#include <fcntl.h>

#define MAX 128
int main(int argc, char *argv[])
{
	//Variables para almacenar el nombre de los ficheros
	char *fich;
	char *tuberia;
	//Variable a utilizar como buffer de lectura/escritura
	char buf[MAX];
	//Si recibimos parametros
	if (argc>2) {
		//Asignamos los valores recibidos como parametro
		fich=argv[1];
		tuberia=argv[2];
		//Vaciamos el buffer para que la primera lectura
		memset(buf,0,MAX);
		int fdw;
		int fdrp=0;
		//Abrimos tuberia para lectura
		if((fdrp=open(tuberia,O_RDONLY))<0)
		{
			perror("Error abriendo la tuberia. Comprueba el nombre pasado como argumento.");
			close(fdw);
			exit(EXIT_FAILURE);
		}
		//Abrimos fichero de salida
		if((fdw=open(fich,O_CREAT | O_TRUNC | O_WRONLY,0644))<0)
		{
			perror("Error abriendo archivo de salida");
			close(fdw);
			exit(EXIT_FAILURE);
		}
		int nleido;
		//Mientras haya contenido en la tuberia lo escribimos en el fichero
		while ( (nleido=read(fdrp,buf,MAX))>0)
		{
			if (write(fdw,buf,nleido)<0)
			{
				perror("Error de escritura en fichero");
				exit(EXIT_FAILURE);
			};
		}
		close(fdw);
		close(fdrp);
		exit(0);
}
	else 
	{
		printf("¡¡ERROR!! ¡¡NO SE HAN RECIBIDO 2 PARAMETROS!!\n");
	};
}
